// ============================== 导入依赖 ============================== //

import * as echarts from 'echarts'

// 颜色名称, 渐变开始, 渐变结束, 面积透明, 曲线线条, 曲线阴影
const DICT = [
  ['blue', '#C0D9FF', '#409EFF', 'rgba(44,117,229,.5)', '#2D75E5', '#5D96EE'], // 蓝
  ['green', '#96EFC5', '#10C390', 'rgba(0,176,126,.5)', '#00B07E', '#00B07E'], // 绿
  ['golden', '#FFDFA0', '#F3B844', 'rgba(249,194,85,.5)', '#FFBB36', '#FBCB71'], // 金
  ['cyan', '#7EF2FB', '#49C1F5', 'rgba(71,223,241,.5)', '#2DC4DB', '#47DFF1'], // 青
  ['red', '#FFD0BE', '#F17361', 'rgba(239,123,123,.5)', '#FF7360', '#E47667'], // 红
]

// ============================== 导出颜色配置 ============================== //

export default {
  // —————————————————————————————— 颜色字典 —————————————————————————————— //

  DICT,

  // —————————————————————————————— 颜色属性 (优先级递减, 为空取第一个) —————————————————————————————— //

  PROPS: {
    color: { default: undefined }, // 自定义颜色
    ...DICT.reduce((obj, [name]) => ({ ...obj, [name]: { type: Boolean, default: false } }), {}), // 是否为某色
  },

  // —————————————————————————————— 条形颜色 —————————————————————————————— //

  BAR: DICT.reduce((obj, [name, start, end]) => {
    obj[name] = new echarts.graphic.LinearGradient(1, 0, 0, 1, [
      { offset: 0, color: start },
      { offset: 1, color: end },
    ])
    return obj
  }, {}),

  // —————————————————————————————— 柱状颜色 —————————————————————————————— //

  COLUMN: DICT.reduce((obj, [name, start, end]) => {
    obj[name] = new echarts.graphic.LinearGradient(0, 0, 0, 1, [
      { offset: 0, color: start },
      { offset: 1, color: end },
    ])
    return obj
  }, {}),

  // —————————————————————————————— 面积颜色 —————————————————————————————— //

  AREA: DICT.reduce((obj, [name, , , rgba]) => {
    obj[name] = new echarts.graphic.LinearGradient(0, 0, 0, 1, [
      { offset: 0, color: rgba },
      { offset: 0.8, color: '#fff' },
    ])
    return obj
  }, {}),

  // —————————————————————————————— 曲线颜色 —————————————————————————————— //

  LINE: DICT.reduce((obj, [name, , , , color]) => ({ ...obj, [name]: color }), {}),

  // —————————————————————————————— 阴影颜色 —————————————————————————————— //

  SHADOW: DICT.reduce((obj, [name, , , , , shadow]) => ({ ...obj, [name]: shadow }), {}),
}
